package com.anti.modular.bus.housebill.service;

import com.anti.jdbc.support.page.PageParam;
import com.anti.jdbc.support.page.PageResult;
import com.anti.modular.bus.housebill.entity.HouseBill;
import com.anti.modular.bus.housebill.entity.HouseBillExcel;
import com.anti.modular.bus.housebill.param.HouseBillDtParam;
import com.anti.modular.bus.housebill.param.HouseBillParam;
import com.anti.modular.bus.housebill.result.BillPringResult;
import com.anti.modular.bus.housebill.result.HouseBillPlanList;
import com.anti.modular.bus.housebill.result.HouseBillResult;
import com.anti.modular.bus.housebill.result.HouseBillWaterResult;
import com.anti.modular.owner.ownerleasebill.result.OwnerLeaseNumResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

/**
 * 账单service接口
 *
 * @author anti
 * @date 2021-05-07 09:59:46
 */
public interface HouseBillService{

    /**
    * 根据主键查询实体
    */
    HouseBill getById(HouseBillParam houseBillParam);

    /**
     * 获取当前有效地租金账单，未到账的
     * @param id
     * @param type 1 租金账单  2水电账单
     * @return
     */
    HouseBill getByNowBillByLeaseId(Long id,int type);

    /**
     * 查询账单
     *
     * @author anti
     * @date 2021-05-07 09:59:46
     */
    PageResult page(PageParam pageParam,HouseBillParam houseBillParam);
    PageResult analysispage(PageParam pageParam,HouseBillParam houseBillParam);


    PageResult houseBillPageByLeaseId(PageParam pageParam, HouseBillParam houseBillParam);

    /**
     * 账单列表
     *
     * @author anti
     * @date 2021-05-07 09:59:46
     */
    List<HouseBill> list(HouseBillParam houseBillParam);

    /**
     * 添加账单
     *
     * @author anti
     * @date 2021-05-07 09:59:46
     */
    void add(HouseBillParam houseBillParam);

    Long add(HouseBill houseBill);

    /**
     * 删除账单
     *
     * @author anti
     * @date 2021-05-07 09:59:46
     */
    void delete(HouseBillParam houseBillParam);

    /**
     * 编辑账单
     *
     * @author anti
     * @date 2021-05-07 09:59:46
     */
    void edit(HouseBillParam houseBillParam);
    void editDt(HouseBillDtParam houseBillParam);
    void editTuoQian(HouseBillParam houseBillParam);
    void editDaozang(HouseBillParam houseBillParam);
    void editCheXiaoDaoZang(HouseBillParam houseBillParam);
    void editQingSuan(HouseBillParam houseBillParam);

    /**
     * 创建清算账单
     */
   // void saveQsBill(HouseBillParam houseBillParam);
    void delAllBillByBillId(Long billId);

    /**
     * 删除租金详情
     * @param billId
     */
    void delZjBillByBillId(Long billId);
    /**
     * 查看账单
     *
     * @author anti
     * @date 2021-05-07 09:59:46
     */
     HouseBill detail(HouseBillParam houseBillParam);

    BillPringResult getPrintMsgForBill(Long id);

    List<HouseBillPlanList> getBillListByLeaseId(Long id);

    HouseBillWaterResult getWaterBillById(Long id);

    OwnerLeaseNumResult houseBillService(HouseBillParam houseBillParam);

    List<HouseBillExcel> getExportData(HouseBillParam houseBillParam);
}
